地图编辑概述

最后更新时间:2019年6月17日

功能介绍

功能概述

我们正处于信息化时代,每时每刻都在产生、表达地理信息。据统计,目前地理信息已占到了人类活动所涉及信息总量的80%,并且地理信息变化很快。因此,想要很好的管理地理信息,就必须保证空间数据的有效性,那么对地理信息的采集和更新就尤为重要。

现在主流的移动设备无论手机还是平板电脑,均具备无线网络、GPS定位、摄像头等模块,这使得数据采集和更新可以不受时空地域的限制,实时传输数据。此外,移动GIS又结合电子地图,既节约了纸质地图的成本,又提高了数据的精度、质量、可用行和复用率,使用移动GIS进行数据的采集和更新越来越受到大众的青睐。

正是由于具有实际的需求,地图编辑成为移动GIS平台的核心功能之一,MapGIS Mobile开发平台为用户提供了灵活的离在线一体化地图编辑功能,可以满足移动端各类应用需求,具体包括以下三类:

0001地图编辑.jpg

应用场景

首先来了解地图要素编辑功能,其他两个模块在后续开发指南中会进行讲解。地图数据要素编辑,包括要素对象的增、删、改,即要素图形样式信息、几何信息、属性信息的编辑,广泛应用于数据采集相关项目,以及数据更新维护等应用场景。

要素编辑.png 要素编辑.png 要素编辑.png

地图要素编辑可以按照数据类型、要素类型、操作类型三种方法进行分类:

地图要素编辑分类.png

功能介绍
1
离线要素编辑

开发者可通过该功能,实现对离线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。

2
在线要素编辑

开发者可通过该功能,实现对在线模式的二维地图要素(点、线、区、注记)的添、删、改编辑功能。

3
交互式地图编辑

开发者可通过该功能,基于草图编辑器(SketchEditor)实现移动端交互式地图要素编辑。

要素结构

地图要素是地图的基本单位,表示地图上具有位置、分布特点和相互关系的地理实体。如:一个城市的的建筑物可以用点要素表示,道路、河流可以用线要素表示,行政区、居民区可以用区要素表示。

地图要素结构包含三个部分,分别为几何信息,属性信息和图形信息,每部分都具有其独有的信息,共同组成完整的地图要素。


功能接口

MapGIS Mobile SDK为离线、在线地图要素的编辑封装了统一的接口,对应的API程序包为com.zondy.mapgis.core.featureservice,核心接口为要素编辑类FeatureEdit。通过FeatureEdit不同的构造函数来进行不同类型地图数据的操作。通过FeatureEdit的append、delete、update方法实现要素的增、删、改。

接口 适用情况
append() 添加要素
delete() 删除要素
update() 更新要素

离线、在线地图要素编辑功能使用同一套接口,区别在于根据数据类型不同,选择不同的FeatureEdit类构造函数来构造对象。FeatureEdit提供了4个构造函数,如下:

接口 适用情况 接口
FeatureEdit(VectorLayer vectorLayer) 离线 通过矢量图层构造编辑对象。
离线数据常用的方法。
FeatureEdit(IVectorCls cls) 离线 通过矢量类对象构造编辑对象。
通常只提供.db数据库时,采用此方法。
FeatureEdit(java.lang.String strIGServerBaseURL, java.lang.String strDataURL) 在线 方便获取在线图层数据的URL地址时采用此方法。
FeatureEdit(java.lang.String strIGServerBaseURL, java.lang.String strDocName, int mapID, intlayerID) 在线 方便获取到在线图层数据在地图文档中的ID时,采用此方法。

下面通过示例展示四种构造函数的用法:

(1) 通过矢量图层构造要素编辑对象

//获取矢量图层
VectorLayer vectorLayer =mapView.getMap().getLayer(i);
//构造要素编辑对象
FeatureEdit featureEdit= new FeatureEdit (vectorLayer);    //参数:矢量图层

(2) 通过矢量类构造要素编辑对象

//构造数据库对象,并打开数据
DataBase dataBase=new DataBase();
dataBase.open("······/map/WuHan/武汉MKT.mgdb");
//构造简单要素类对象,并打开要素图层
SFeatureCls sFeatureCls=new SFeatureCls(database);
sFeatureCls.open(i); //图层ID,从1开始
//构造要素编辑对象
FeatureEdit  featureEdit = new FeatureEdit (sFeatureCls);   //矢量类对象

(3) 根据在线图层的URL构造要素编辑对象

//根据服务基地址、图层URL构造要素编辑对象
FeatureEdit featureEdit = new FeatureEdit("http://develop.smaryun.com:6163/igs","gdbp://MapGisLocal/武汉MKT/sfcls/武汉市");

(4) 根据在线图层的ID构造要素编辑对象

//根据服务基地址、地图文档名称、地图索引、图层索引构造要素编辑对象
FeatureEdit featureEdit = new FeatureEdit("http://develop.smaryun.com:6163/igs","WuHan",0,0);